package com.choosefine.it.worker.dao;

import java.util.List;
import java.util.Map;

import com.choosefine.it.payment.model.TeamMembersVO;
import com.choosefine.it.project.model.WorkerAttendanceDetail;
import com.choosefine.it.project.model.vo.WorkerSalaryChangeDetailsVO;
import com.choosefine.it.worker.model.WorkerSalaryDayInterface;
import com.choosefine.it.worker.model.vo.WorkerSalaryDayInterfaceVO;
import com.choosefine.it.worker.model.vo.WorkerSalaryMonthVO;

public interface WorkerSalaryDayInterfaceMapper {

    /**
     * 添加职工考勤记录
     * 
     * @auth liaozhanggen 2016-12-12 下午5:20:36
     */
    int insertWorkerAttendanceRecord(List<WorkerSalaryDayInterface> record);
    
    /**
     * 同步 insertWorkerAttendanceRecord 添加的考勤记录到接口表中
     * 
     * @auth liaozhanggen 2016-12-12 下午6:38:05
     */
    int addSyncWorkerAttendanceInterfaceRecord(List<Integer> arrId);

    
    /**
     * 11.26dzq 用于查出某团队下某时间段内的工人名单
     * @param map
     * @return
     */
    List<Map<String, Object>> selectTeamMemberUserByTeamId(Map<String, Object> map);
    
//    /**
//     * 11.26dzq 用于查出某条关系在某段时间下的工资日单
//     * @param map
//     * @return
//     */
//    Page<Map<String, Object>> selectDaySalaryDetail(Map<String, Object> map);
    
    /**
     * 工人开始工作最小时间
     * @param map
     * @return
     */
    long selectMinTime(Map<String, Object> map);


    
    /**
     * 根据当前工人、所在班组关系、月份，查询月下的明细->天day
     * 
     * @auth liaozhanggen 2016-12-2 下午3:44:40
     */
    List<WorkerSalaryDayInterface> queryWorkerSalaryDayDetails(Map<String,Object> map);

    /**
     * 编辑职工考勤记录-批量/单个
     * 
     * @auth liaozhanggen 2016-12-13 上午11:05:48
     */
	int updateBatchWorkerAttendanceRecords(List<WorkerSalaryDayInterface> record);

	/**
	 * 根据每月查看每天的考勤详情,不用分页
	 * 
	 * @author liaozhanggen 2016年12月29日
	 */
	List<WorkerSalaryDayInterfaceVO> selectDaySalaryDetailByMonthly(Map<String, Object> map);
	
	/**
	 * 根据project_code,team_id,user_code,worker_time_start 四个参数校验当前职员是否已经存在考勤worker_time_start
	 * 
	 * @author liaozhanggen 2017年1月6日
	 */
	int queryIsExistsWorkerAttendance(Map<String,Object> param);

	WorkerSalaryMonthVO selectmonthtotal(Map<String, Object> map);//查看qh_worker_salary_month里每月小计(总工数,应付工资,已付工资,未付工资)

	WorkerSalaryChangeDetailsVO selectWorkerSalaryChangeDetails(Map<String, Object> map);

	/*List<Map> selectmonthlist(Map<String, Object> map);*/
	Map selectmonthlisttotal(Map<String, Object> map);

	/**
	 * 失效 指定哪条工人的哪天考勤
	 * @Author：liaozhanggen
	 * @Create Date：2017年2月25日
	 * @param：....
	 * @return：int
	 */
	int modifyWorkerAttendInvalid(List<String> wsdfIds);


	/**
	 * 单个工人薪资工资明细
	 *
	 * @Author：liaozhanggen
	 * @Create Date：2017年2月25日
	 * @param：....
	 * @return：WorkerSalaryChangeDetailsVO
	 */
	WorkerSalaryChangeDetailsVO selectWorkerSalaryDayDetail(int id);

	/** 
	 * 根据日考勤 主键查询部分属性明细
	 * @Author：liaozhanggen
	 * @Create Date：2017年2月25日
	 * @param：....
	 * @return：List<WorkerAttendanceDetail>
	 */
	List<WorkerAttendanceDetail> findWorkAttendByListID(List<String> wsdfIds);
}